You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Move joint/end_effector now can take multiple waypoints as input.
TODO:
Move joints.
Move EndEffector
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
List any dependencies that are required for this change.
Type of change
Enhancement (non-breaking change which improves an existing functionality)
Checklist
I have run the black . command to format the code base.
I have made corresponding changes to the documentation
I have added tests that prove my fix is effective or that my feature works
Reviewed the current implementation against main (7bcd2144..bb06b5ed). The change is narrowly scoped and the targeted atomic-action tests pass, but I think this needs fixes before merge.
Blocking / should fix
Multi-waypoint trajectories do not guarantee exact visits to intermediate waypoints
The implementation passes all keyframes to interpolate_with_distance() and resamples the entire path to a fixed count. That preserves path order, but it does not guarantee intermediate waypoints appear as emitted trajectory samples. For example, keyframes [0, 1, 3] with 5 samples become [0, 0.75, 1.5, 2.25, 3], so waypoint 1 is skipped. This conflicts with the new “visits every waypoint” API contract and can miss clearance/safety waypoints.
Suggested fix: interpolate segment-by-segment while preserving each keyframe boundary, or explicitly insert exact keyframes into the sampled output. Also validate that sample_interval can accommodate all required keyframes.
Empty multi-waypoint targets silently succeed as no-ops
(n_envs, 0, 4, 4) and (n_envs, 0, dof) pass validation. Planning then prepends only start_qpos, returning a successful stationary trajectory. These should be rejected with a clear error, and tests should cover empty waypoint tensors.
EndEffectorPoseTarget is now ambiguous for Place
embodichain/lab/sim/atomic_actions/core.py:73
embodichain/lab/sim/atomic_actions/actions.py:687
EndEffectorPoseTarget now documents the 4D multi-waypoint form, and Place accepts the same target type, but Place.execute() still expects a single pose and will fail later through a generic shape check. Either reject 4D targets in Place with a clear error, split the target type, or implement multi-waypoint place behavior.
Tests mock out the behavior that most needs protection
tests/sim/atomic_actions/test_actions.py:174
tests/sim/atomic_actions/test_actions.py:287
tests/sim/atomic_actions/test_trajectory.py:252
The new tests assert that keyframes are passed into the interpolator, but not that the returned trajectory actually preserves intermediate waypoints. Add a real interpolation regression test with a simple uneven path and assert intermediate waypoints are emitted.
The reason will be displayed to describe this comment to others. Learn more.
Please check the comments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Move joint/end_effector now can take multiple waypoints as input.
TODO:
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
List any dependencies that are required for this change.
Type of change
Checklist
black .command to format the code base.